This invention relates to systems for stress and general testing of server computers. More particularly, the invention relates a distributed and automated test administration system that administers stress and functional tests running on one or more registered client computers against one or more registered server computers, either of which may be located anywhere on the Internet. Moreover, the system enables a system administrator to administer these tests from a remote location using only a browser-based computer.
Traffic on the Internet is growing at a rapid pace. With millions of users visiting a growing number of sites each day, the computer systems that form the Web sites are being asked to serve more and more clients. Web site administrators are continually evaluating their systems to improve performance and efficiency in better servicing their clients. Such evaluations help the administrator learn whether the server software is running properly, whether more or less resources are needed to properly service the demand, and so forth.
System administrators typically administer stress tests on their server computers at the Web site. The administrators configure the tests, run them, and oversee the results while on location at the site. Unfortunately, this on-location requirement has a number of drawbacks in that it requires very knowledgeable administrators who are familiar with each test to be at the site anytime a test is to be run. If the administrator happens to be sick or on vacation, or worse, has left the company, it is very difficult for someone else to come in and execute the tests.
Accordingly, there is a need for a testing architecture that provides some automation of the testing process and enables a system administrator to administer the tests from a remote location.
Apart from Web servers, applications are also becoming more complex, requiring more extensive testing. There is a clear need for a way to organize and execute tests, without necessarily having to add resources to execute those tests. As tests grow in number, it also becomes more difficult to know how each test runs and how it reports results. There is also a need to standardize test execution and reporting.
This invention concerns a distributed and automated test administration architecture that allows a system administrator to administer, from a remote browser-based computer, automated tests on registered server computers located anywhere on the Internet. The architecture has distributed software components that are coordinated using standard IP (Internet protocol) messaging, such as HTTP (hypertext transport protocol) messages.
According to one implementation, the distributed test administration system includes a central testing server, a remote administration client, one or more registered clients, and one or more registered servers. The software architecture that implements the system has components located at the central testing server, the registered clients, and the registered servers. A conventional browser is all that is required at the remote administration client.
The centralized testing server allows the system administrator (or anyone) using a Web browser to initiate tests on any registered clients and servers. The testing server has a testing application to generate a test page that can be served to the browser at the remote administration client over the Internet (or other IP network). The test page contains test information and functionality that, when rendered by the browser, enables the system administrator to specify at least one test, at least one participating server from among the registered servers, and at least one participating client from among the registered clients. The test parameters are returned in an HTTP message from the browser to the central testing server.
The Web page interface facilitates easy test administration for even people who are not intimately familiar with the tests. Non-technical people can configure tests for selected machines using a point-and-click interface and then launch the tests with a single click of a button. A system administrator (or anyone) can call upon otherwise idle machines at the click of a button to run a test. Tests can also be executed in an automated fashion at a specified time.
The testing application at the central testing server has a coordination system that coordinates execution of the test on the participating client and the participating server. In one implementation, the coordination system is a queue structure that queues events in an preferred order of execution. The testing application pops an event from the queue structure and sends an HTTP message to the participating server or the participating client in response to that event. Such events include setting up the participating server, starting the tests, and cleaning up the participating server after the tests are complete.
The central testing server can be configured to automatically kick-off stress or functional tests on machines at a given time. For instance, the machines can run tests during off hours, and report results by the time the administrators arrive at work.
Test execution information and test data are passed over the Internet via normal HTTP requests so the platform of a client or server can be unknown to the central testing server. The architecture is independent of the tests being run against a product as it essentially allows execution of any tests for any product. Yet, the architecture defines a common interface for test execution.
The software architecture also includes an automated testing service (ATS) installed on every registered client and server. The ATS allows the computers to be utilized as servers, clients, or both. The testing service is invoked to run the tests on the participating client and participating server. The testing service is responsive to the HTTP messages received from the testing application to perform the test and gather test results from the tests. The testing service also sends HTTP messages containing the test results back to the testing application at the central testing server.
A database resides at the central testing server to store the test results received from the testing services. The testing application generates a status page that, when rendered by the browser, presents the test results from running the tests on the participating clients and the participating servers.
One of the advantages of continuously recording test results and collecting it as done in this design is with enough history (data warehousing) one can begin to see patterns in the product (quality trends) and monitor the stability of a particular. feature of the application being tested (data mining). This aids in quality assurance and insures that product goals are being met. Other types of information can be attained from raw test status dataxe2x80x94is the product in line with shipping dates, are members of the group adhering the guidelines laid out for the building process, are there sections of the product that need more resources, and the list goes on.